home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 7 / FM Towns Free Software Collection 7.iso / game / block / block.bas < prev    next >
BASIC Source File  |  1993-11-30  |  3KB  |  69 lines

  1. 10 SCREEN@ 1 : COLOR 7,0,,4 : CLS : PLAY"t255l64","t255l64","t255l64" : COLOR ,,,4 : ON INTERVAL GOSUB 620 : ON ERROR GOTO 540
  2. 20 DIM A%(48),BP(16,12),X(15),Y(15),VX(15),VY(15),KS%(48) : LOAD@"ball.ptr",A%
  3. 23 STAGE=1
  4. 24 '
  5. 25 '
  6. 30 SPEED=.1! : CX1=0 : CY1=0 : CX2=0 : CY2=0 : C=0 : CLS
  7. 31 A$=STR$(STAGE) : LOAD@"data\bl_"+RIGHT$(A$,LEN(A$)-1)+".dat",BP
  8. 170 LINE(0,0)-(219,239),PSET,[255,120,120],B : LINE(1,239)-(218,239),PSET,[0,0,0]
  9. 180 LOCATE 57,15:PRINT "Copyright(C) H.Imoto"
  10. 190 LOCATE 57,16:PRINT "IKK VIDEO CORP;1993"
  11. 200 GOSUB 490
  12. 210 LOCATE 60,4 : PRINT "LEFT TIME" : LOCATE 60,7 : PRINT "LEFT BLOCK"
  13. 220 '
  14. 221 '
  15. 230 TM=INT(BL*1.2!) : IF TM<40 THEN TM=40
  16. 231 X=150 : Y=220 : L=15
  17. 232 MOUSE 0 : MOUSE 1,X,220,0 : MOUSE 4,2,0,217-L,239 : INTERVAL 1 : INTERVAL ON : LOCATE 65,5 : PRINT TM : LOCATE 65,8 : PRINT BL
  18. 240 GOSUB 410 : GOTO 300
  19. 250 '
  20. 251 '
  21. 260 X=MOUSE(0) : IF MOUSE(2,0)=-1 AND F=1 THEN F=0 : GOSUB 410
  22. 270 IF F=0 THEN GOSUB 330 ELSE IF F=-1 THEN GOSUB 560
  23. 280 IF X=X2 THEN 260
  24. 290 LINE(X2,Y)-(X2+L,Y+5),PSET,0,BF
  25. 300 LINE(X,Y)-(X+L,Y+5),PSET,7,BF
  26. 310 X2=X : GOTO 260
  27. 320 '
  28. 330 PUT@A(TX,TY)-(TX+6,TY+6),A%
  29. 340 TX=TX+A : TY=TY+B : CX1=TX+3+SGN(A)*3 : CY1=TY+3-SGN(B)*3 : CX2=TX+3-SGN(A)*3 : CY2=TY+3+SGN(B)*3
  30. 350 IF POINT(CX1,CY1) THEN C=1
  31. 360 IF POINT(CX2,CY2) THEN C=C+2
  32. 370 IF C>0 THEN GOSUB 430
  33. 380 IF TY>240 THEN F=1 : PLAY,"@77v13o2a16r16a4" : GOTO 260
  34. 390 RETURN
  35. 400 '
  36. 410 TX=INT(RND*200)+10 : TY=1 : A=-7*SPEED : B=7*SPEED : F=-1 : HJMT=1 : PLAY,"@77v9o5a4" : RETURN
  37. 420 '
  38. 430 IF C=1 THEN BX=CX1 \ 13 : BY=CY1 \ 7 ELSE BX=CX2 \ 13 : BY=CY2 \ 7
  39. 440 IF BY<13 THEN BP=BP(BX,BY) : IF BP>0 THEN A=SGN(A)*BP :B=SGN(B)*BP: LINE(BX*13,BY*7)-(BX*13+11,BY*7+5),PSET,[0,0,0],BF:PLAY"@76v13o4a" : BL=BL-1 : LOCATE 65,8 : PRINT BL : IF BL<1 THEN 710
  40. 450 AA=A*(C MOD 2=1) : BB=B*(C>1) : TX=TX+AA : TY=TY+BB
  41. 460 IF AA=-A THEN A=-A ELSE IF BB=-B THEN B=-B
  42. 470 PLAY,"v13@77o4a" : C=0 : RETURN
  43. 480 '
  44. 490 BL=0 : FOR J=0 TO 12 : FOR I=0 TO 16 : X=I*13 : Y=J*7 : BP=BP(I,J) : BP(I,J)=BP(I,J)*SPEED
  45. 500 IF BP>0 THEN A=255*BP*.1! : LINE(X,Y)-(X+11,Y+5),PSET,[INT(A),INT(A),INT(A)],BF : BL=BL+1
  46. 510 NEXT : NEXT
  47. 520 RETURN
  48. 530 '
  49. 540 IF ERR=63 THEN RESUME 23
  50. 542 TX=INT(TX) : TY=INT(TY) : RESUME 330
  51. 550 '
  52. 560 IF HJMT=0 THEN PUT@A(TX-A,TY-B)-(TX+6-A,TY+6-B),KS% ELSE HJMT=0
  53. 570 GET@A(TX,TY)-(TX+6,TY+6),KS% : PUT@A(TX,TY)-(TX+6,TY+6),A%
  54. 580 TX=TX+A : TY=TY+B
  55. 590 IF TX<2 OR TX>213 THEN A=-A : F=0 : GOSUB 430
  56. 600 RETURN
  57. 610 '
  58. 620 TM=TM-1 : LOCATE 65,5 : PRINT TM : BEEP 363523,9,1000
  59. 630 IF TM>0 THEN RETURN
  60. 640 INTERVAL OFF :PLAY"v10@77(o5go4co2ao6b)2": SYMBOL(41,50),"TIME OVER",1,1,4,,,5
  61. 650 LINE(TX,TY)-(TX+6,TY+6),PSET,0,BF:PLAY"V14@67O1C1&C1&C1."
  62. 660 FOR N=1 TO 15 :X(N)=TX+3 : Y(N)=TY+3 : R=RND*6.3! : VX(N)=COS(R)*5 : VY(N)=SIN(R)*5
  63. 670 FOR I=1 TO N  :PRESET(X(I),Y(I)): X(I)=X(I)+VX(I) : Y(I)=Y(I)+VY(I) :PSET(X(I),Y(I)): NEXT:NEXT:N=N-1
  64. 680 FOR J=1 TO 55 :FOR I=1 TO N  :PRESET(X(I),Y(I)): X(I)=X(I)+VX(I) : Y(I)=Y(I)+VY(I) : PSET(X(I),Y(I)): NEXT:NEXT
  65. 690 SYMBOL(81,75),"Replay?",1,1,5,,,5 : WHILE MOUSE(2,0)=0 : WEND : GOTO 30
  66. 700 '
  67. 710 INTERVAL OFF
  68. 720 STAGE=STAGE+1 : GOTO 30
  69.